export const drawPluginSetupAbi = [
  {
    name: "tokenAddress",
    type: "address",
  },
  {
    name: "nftAddress",
    type: "address",
  },
  { name: "pluginMetadata", type: "bytes" },
] as const;

export const drawPluginPrepareUpdateAbi = [
  { name: "pluginMetadata", type: "bytes" },
] as const;

export const drawPluginAbi = [
  {
    name: "initialize",
    type: "function",
    inputs: [
      { name: "_dao", type: "address" },
      { name: "_tokenAddress", type: "address" },
      { name: "_nftAddress", type: "address" },
      { name: "_pluginMetadata", type: "bytes" },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "initializeFrom",
    type: "function",
    inputs: [
      { name: "_fromBuild", type: "uint16" },
      { name: "_initData", type: "bytes" },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "draw",
    type: "function",
    inputs: [],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "exchange",
    type: "function",
    inputs: [],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "setTokenThreshold",
    type: "function",
    inputs: [{ name: "_newThreshold", type: "uint256" }],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "withdrawFunds",
    type: "function",
    inputs: [],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "withdrawTokens",
    type: "function",
    inputs: [{ name: "_amount", type: "uint256" }],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "drawSpecific",
    type: "function",
    inputs: [
      { name: "_user", type: "address" },
      { name: "_nftId", type: "uint256" },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "drawSpecificBatch",
    type: "function",
    inputs: [
      { name: "_users", type: "address[]" },
      { name: "_nftIds", type: "uint256[]" },
    ],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "setMetadata",
    type: "function",
    inputs: [{ name: "_metadata", type: "bytes" }],
    outputs: [],
    stateMutability: "nonpayable",
  },
  {
    name: "token",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "address" }],
    stateMutability: "view",
  },
  {
    name: "nft",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "address" }],
    stateMutability: "view",
  },
  {
    name: "tokenThreshold",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "uint256" }],
    stateMutability: "view",
  },
  {
    name: "numNFTs",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "uint256" }],
    stateMutability: "view",
  },
  {
    name: "getMetadata",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "bytes" }],
    stateMutability: "view",
  },
  {
    name: "getTargetConfig",
    type: "function",
    inputs: [],
    outputs: [
      {
        name: "",
        type: "tuple",
        components: [
          { name: "target", type: "address" },
          { name: "operation", type: "uint8" },
        ],
      },
    ],
    stateMutability: "view",
  },
  {
    name: "ADMIN_PERMISSION_ID",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "bytes32" }],
    stateMutability: "view",
  },
  {
    name: "dao",
    type: "function",
    inputs: [],
    outputs: [{ name: "", type: "address" }],
    stateMutability: "view",
  },
] as const;
